<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;
use Validator;
use Hash;
use Auth;
class PasswordRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */

    //自定义规则
    //第一个参数是自定义验证规则的名称
    //第二个参数是回调参数，也就是自定义的验证规则最终会被用给某个字段的验证，谁被验证，谁就会通过回调方法的返回只来
    //判断验证是否通过，返回真验证通过，反之不通过
    //$attribute 要被验证的属性名称（字段名称）
    //$value  要被验证的字段名称的值
    //$parameters 传入验证规则的参数数组
    //$validator: Validator的实例
    public function ziji(){
        Validator::extend('check_password',function ($attribute, $value, $parameters, $validator){

            //该验证方法是用来判断用户输入的旧密码是否和当前的登录账号密码相同
            return Hash::check($value,Auth::user()->password);

        });
    }



    public function rules()
    {
        //调用自定义的验证规则方法
        $this->ziji();
        return [
            'name' => 'required',
            //如果使用了nullable验证方法，被验证的字段如果没有填，就不会去使用后面的验证规则，一旦填写就必须满足后面的验证规则
            'oldpassword' => 'nullable|check_password',
            'password' => 'nullable|confirmed|between:6,16',
            'password_confirmation' => 'nullable|between:6,16'
            //
        ];
    }
    //自定义提示消息
    public function messages(){
        return [
            'oldpassword.check_password' => '旧密码输入错误!'
        ];
    }
}
